System.register([], function (_export) {
"use strict";
var DirtyChecker, DirtyCheckProperty;
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
return {
setters: [],
execute: function () {
DirtyChecker = (function () {
function DirtyChecker() {
_classCallCheck(this, DirtyChecker);
this.tracked = [];
this.checkDelay = 120;
}
DirtyChecker.prototype.addProperty = function addProperty(property) {
var tracked = this.tracked;
tracked.push(property);
Eif (tracked.length === 1) {
this.scheduleDirtyCheck();
}
};
DirtyChecker.prototype.removeProperty = function removeProperty(property) {
var tracked = this.tracked;
tracked.splice(tracked.indexOf(property), 1);
};
DirtyChecker.prototype.scheduleDirtyCheck = function scheduleDirtyCheck() {
var _this = this;
setTimeout(function () {
return _this.check();
}, this.checkDelay);
};
DirtyChecker.prototype.check = function check() {
var tracked = this.tracked,
i = tracked.length;
while (i--) {
var current = tracked[i];
if (current.isDirty()) {
current.call();
}
}
if (tracked.length) {
this.scheduleDirtyCheck();
}
};
return DirtyChecker;
})();
_export("DirtyChecker", DirtyChecker);
DirtyCheckProperty = (function () {
function DirtyCheckProperty(dirtyChecker, obj, propertyName) {
_classCallCheck(this, DirtyCheckProperty);
this.dirtyChecker = dirtyChecker;
this.obj = obj;
this.propertyName = propertyName;
this.callbacks = [];
this.isSVG = obj instanceof SVGElement;
}
DirtyCheckProperty.prototype.getValue = function getValue() {
return this.obj[this.propertyName];
};
DirtyCheckProperty.prototype.setValue = function setValue(newValue) {
Iif (this.isSVG) {
this.obj.setAttributeNS(null, this.propertyName, newValue);
} else {
this.obj[this.propertyName] = newValue;
}
};
DirtyCheckProperty.prototype.call = function call() {
var callbacks = this.callbacks,
i = callbacks.length,
oldValue = this.oldValue,
newValue = this.getValue();
while (i--) {
callbacks[i](newValue, oldValue);
}
this.oldValue = newValue;
};
DirtyCheckProperty.prototype.isDirty = function isDirty() {
return this.oldValue !== this.getValue();
};
DirtyCheckProperty.prototype.beginTracking = function beginTracking() {
this.tracking = true;
this.oldValue = this.newValue = this.getValue();
this.dirtyChecker.addProperty(this);
};
DirtyCheckProperty.prototype.endTracking = function endTracking() {
this.tracking = false;
this.dirtyChecker.removeProperty(this);
};
DirtyCheckProperty.prototype.subscribe = function subscribe(callback) {
var callbacks = this.callbacks,
that = this;
callbacks.push(callback);
Eif (!this.tracking) {
this.beginTracking();
}
return function () {
callbacks.splice(callbacks.indexOf(callback), 1);
Eif (callbacks.length === 0) {
that.endTracking();
}
};
};
return DirtyCheckProperty;
})();
_export("DirtyCheckProperty", DirtyCheckProperty);
}
};
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9FaXNlbmJlcmdFZmZlY3QvRG9jdW1lbnRzL0dpdEh1Yi9UaGUgRHVyYW5kYWwgUHJvamVjdC9hdXJlbGlhL2JpbmRpbmcvc3JjL2RpcnR5LWNoZWNraW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztNQUFhLFlBQVksRUEyQ1osa0JBQWtCOzs7Ozs7O0FBM0NsQixrQkFBWTtBQUNaLGlCQURBLFlBQVksR0FDVjtnQ0FERixZQUFZOztBQUVyQixjQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztBQUNsQixjQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQztTQUN2Qjs7QUFKVSxvQkFBWSxXQU12QixXQUFXLEdBQUEscUJBQUMsUUFBUSxFQUFDO0FBQ25CLGNBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7O0FBRTNCLGlCQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUV2QixjQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQ3ZCLGdCQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztXQUMzQjtTQUNGOztBQWRVLG9CQUFZLFdBZ0J2QixjQUFjLEdBQUEsd0JBQUMsUUFBUSxFQUFDO0FBQ3RCLGNBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7QUFDM0IsaUJBQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUM5Qzs7QUFuQlUsb0JBQVksV0FxQnZCLGtCQUFrQixHQUFBLDhCQUFFOzs7QUFDbEIsb0JBQVUsQ0FBQzttQkFBTSxNQUFLLEtBQUssRUFBRTtXQUFBLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2pEOztBQXZCVSxvQkFBWSxXQXlCdkIsS0FBSyxHQUFBLGlCQUFHO0FBQ04sY0FBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU87Y0FDdEIsQ0FBQyxHQUFHLE9BQU8s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LFFBQVEsRUFBQztBQUNoQixnQkFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1dBQ3RCOztBQUVELGlCQUFPLFlBQVU7QUFDZixxQkFBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pELGdCQUFHLFNBQVMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFDO0FBQ3hCLGtCQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7V0FDRixDQUFDO1NBQ0g7O2VBakVVLGtCQUFrQjs7O29DQUFsQixrQkFBa0IiLCJmaWxlIjoiL1VzZXJzL0Vpc2VuYmVyZ0VmZmVjdC9Eb2N1bWVudHMvR2l0SHViL1RoZSBEdXJhbmRhbCBQcm9qZWN0L2F1cmVsaWEvYmluZGluZy9zcmMvZGlydHktY2hlY2tpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgRGlydHlDaGVja2VyIHtcbiAgY29uc3RydWN0b3IoKXtcbiAgICB0aGlzLnRyYWNrZWQgPSBbXTtcbiAgICB0aGlzLmNoZWNrRGVsYXkgPSAxMjA7XG4gIH1cblxuICBhZGRQcm9wZXJ0eShwcm9wZXJ0eSl7XG4gICAgdmFyIHRyYWNrZWQgPSB0aGlzLnRyYWNrZWQ7XG5cbiAgICB0cmFja2VkLnB1c2gocHJvcGVydHkpO1xuXG4gICAgaWYodHJhY2tlZC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVEaXJ0eUNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlUHJvcGVydHkocHJvcGVydHkpe1xuICAgIHZhciB0cmFja2VkID0gdGhpcy50cmFja2VkO1xuICAgIHRyYWNrZWQuc3BsaWNlKHRyYWNrZWQuaW5kZXhPZihwcm9wZXJ0eSksIDEpO1xuICB9XG5cbiAgc2NoZWR1bGVEaXJ0eUNoZWNrKCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNoZWNrKCksIHRoaXMuY2hlY2tEZWxheSk7XG4gIH1cblxuICBjaGVjaygpIHtcbiAgICB2YXIgdHJhY2tlZCA9IHRoaXMudHJhY2tlZCxcbiAgICAgICAgaSA9IHRyYWNrZWQubGVuZ3RoO1xuXG4gICAgd2hpbGUoaS0tKSB7XG4gICAgICB2YXIgY3VycmVudCA9IHRyYWNrZWRbaV07XG5cbiAgICAgIGlmKGN1cnJlbnQuaXNEaXJ0eSgpKXtcbiAgICAgICAgY3VycmVudC5jYWxsKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYodHJhY2tlZC5sZW5ndGgpIHtcbiAgICAgIHRoaXMuc2NoZWR1bGVEaXJ0eUNoZWNrKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaXJ0eUNoZWNrUHJvcGVydHkge1xuICBjb25zdHJ1Y3RvcihkaXJ0eUNoZWNrZXIsIG9iaiwgcHJvcGVydHlOYW1lKXtcbiAgICB0aGlzLmRpcnR5Q2hlY2tlciA9IGRpcnR5Q2hlY2tlcjtcbiAgICB0aGlzLm9iaiA9IG9iajtcbiAgICB0aGlzLnByb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZTtcbiAgICB0aGlzLmNhbGxiYWNrcyA9IFtdO1xuICAgIHRoaXMuaXNTVkcgPSBvYmogaW5zdGFuY2VvZiBTVkdFbGVtZW50O1xuICB9XG5cbiAgZ2V0VmFsdWUoKXtcbiAgICByZXR1cm4gdGhpcy5vYmpbdGhpcy5wcm9wZXJ0eU5hbWVdO1xuICB9XG5cbiAgc2V0VmFsdWUobmV3VmFsdWUpe1xuICAgIGlmKHRoaXMuaXNTVkcpe1xuICAgICAgdGhpcy5vYmouc2V0QXR0cmlidXRlTlMobnVsbCwgdGhpcy5wcm9wZXJ0eU5hbWUsIG5ld1ZhbHVlKTtcbiAgICB9ZWxzZXtcbiAgICAgIHRoaXMub2JqW3RoaXMucHJvcGVydHlOYW1lXSA9IG5ld1ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGNhbGwoKXtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5jYWxsYmFja3MsXG4gICAgICAgIGkgPSBjYWxsYmFja3MubGVuZ3RoLFxuICAgICAgICBvbGRWYWx1ZSA9IHRoaXMub2xkVmFsdWUsXG4gICAgICAgIG5ld1ZhbHVlID0gdGhpcy5nZXRWYWx1ZSgpO1xuXG4gICAgd2hpbGUoaS0tKSB7XG4gICAgICBjYWxsYmFja3NbaV0obmV3VmFsdWUsIG9sZFZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm9sZFZhbHVlID0gbmV3VmFsdWU7XG4gIH1cblxuICBpc0RpcnR5KCl7XG4gICAgcmV0dXJuIHRoaXMub2xkVmFsdWUgIT09IHRoaXMuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIGJlZ2luVHJhY2tpbmcoKXtcbiAgICB0aGlzLnRyYWNraW5nID0gdHJ1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gdGhpcy5uZXdWYWx1ZSA9IHRoaXMuZ2V0VmFsdWUoKTtcbiAgICB0aGlzLmRpcnR5Q2hlY2tlci5hZGRQcm9wZXJ0eSh0aGlzKTtcbiAgfVxuXG4gIGVuZFRyYWNraW5nKCl7XG4gICAgdGhpcy50cmFja2luZyA9IGZhbHNlO1xuICAgIHRoaXMuZGlydHlDaGVja2VyLnJlbW92ZVByb3BlcnR5KHRoaXMpO1xuICB9XG5cbiAgc3Vic2NyaWJlKGNhbGxiYWNrKXtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5jYWxsYmFja3MsXG4gICAgICAgIHRoYXQgPSB0aGlzO1xuXG4gICAgY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXG4gICAgaWYoIXRoaXMudHJhY2tpbmcpe1xuICAgICAgdGhpcy5iZWdpblRyYWNraW5nKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uKCl7XG4gICAgICBjYWxsYmFja3Muc3BsaWNlKGNhbGxiYWNrcy5pbmRleE9mKGNhbGxiYWNrKSwgMSk7XG4gICAgICBpZihjYWxsYmFja3MubGVuZ3RoID09PSAwKXtcbiAgICAgICAgdGhhdC5lbmRUcmFja2luZygpO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbiJdfQ== |